\preface

Il presente lavoro è stato sviluppato come laboratorio progettuale relativo ai corsi di \emph{Programmazione Avanzata per il Calcolo Scientifico} e di \emph{Analisi Numerica delle Equazioni alle Derivate Parziali 2}, erogati dal Politecnico di Milano, nell'ambito della Laurea Specialistica in Ingegneria Matematica.\\
Lo scopo di questo progetto consiste nell'implementazione di una libreria in linguaggio C++, che sia in grado di risolvere problemi parabolici bidimensionali per mezzo di una discretizzazione spaziale SEM-NI su domini rettangolari e di uno schema di avanzamento temporale di tipo $\vartheta$-metodo.\\
Dal punto di vista teorico, le difficoltà riscontrate riguardano l'approccio ai metodi spettrali, anche tempo-dipendenti, poiché non sono stati trattati in maniera approfondita in occasione delle lezioni.
Per quanto riguarda l'aspetto implementativo, invece, dobbiamo ricordare che il codice è l'estensione di un precedente lavoro, relativo a una libreria per elementi spettrali, che risolve problemi ellittici attraverso il metodo della decomposizione di domini.
Le principali estensioni di cui ci siamo occupati in questo lavoro, e che hanno comportato le maggiori difficoltà, sono state:
\begin{itemize}
	\item l'estrazione del solutore monodominio per problemi ellittici, poiché ha comportato la totale comprensione della libreria dalla quale siamo partiti;
	\item l'introduzione del solutore spettrale per problemi parabolici, attraverso l'implementazione del $\vartheta$-metodo, che ha causato la modifica della struttura del codice, in modo da renderlo adatto al trattamento di funzioni tempo-dipendenti;
	\item l'implementazione delle condizioni di tipo Neumann, che ci ha portato a riscrivere completamente le strutture dati per le condizioni al bordo;
	\item lo sviluppo di un'interfaccia grafica facilmente personalizzabile che, all'occorrenza, consentisse anche di produrre dei filmati, una volta ponderata la natura evolutiva dei problemi che intendiamo risolvere.
\end{itemize}
Venendo ora alla struttura del lavoro, la presente relazione è stata suddivisa in tre parti.
La prima comprende tutta l'analisi teorica degli strumenti utilizzati nel codice, dunque metodi spettrali e problemi differenziali evolutivi, attraverso un inquadramento delle problematiche che si presentano, oltre che dei metodi adatti alla loro risoluzione.
La seconda parte, invece, contiene una descrizione della struttura del codice, delle sue classi più importanti, e di come sono stati implementati i principali metodi presenti nella libreria.
Oltre a questo, si può anche trovare una sezione in cui vengono descritti alcuni strumenti software, utilizzati in fase di progettazione del codice, oppure adottati per funzionare con esso.
Infine, la terza parte del lavoro tratta i principali risultati numerici ottenuti attraverso le simulazioni, sia di un problema test sia di un caso più applicativo.

\vspace{\baselineskip}

\begin{flushright}\noindent
    Milano,		\hfill	{\it Michele Stefano  Altieri}\\
    settembre 2009	\hfill	{\it Andrea  Stefanoni}\\
\end{flushright}
